home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / p_man / cat3 / complib / zhbevd.z / zhbevd
Text File  |  1998-10-30  |  6KB  |  199 lines

  1.  
  2.  
  3.  
  4. ZZZZHHHHBBBBEEEEVVVVDDDD((((3333FFFF))))                                                          ZZZZHHHHBBBBEEEEVVVVDDDD((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ZHBEVD - compute all the eigenvalues and, optionally, eigenvectors of a
  10.      complex Hermitian band matrix A
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE ZHBEVD( JOBZ, UPLO, N, KD, AB, LDAB, W, Z, LDZ, WORK, LWORK,
  14.                         RWORK, LRWORK, IWORK, LIWORK, INFO )
  15.  
  16.          CHARACTER      JOBZ, UPLO
  17.  
  18.          INTEGER        INFO, KD, LDAB, LDZ, LIWORK, LRWORK, LWORK, N
  19.  
  20.          INTEGER        IWORK( * )
  21.  
  22.          DOUBLE         PRECISION RWORK( * ), W( * )
  23.  
  24.          COMPLEX*16     AB( LDAB, * ), WORK( * ), Z( LDZ, * )
  25.  
  26. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  27.      ZHBEVD computes all the eigenvalues and, optionally, eigenvectors of a
  28.      complex Hermitian band matrix A.  If eigenvectors are desired, it uses a
  29.      divide and conquer algorithm.
  30.  
  31.      The divide and conquer algorithm makes very mild assumptions about
  32.      floating point arithmetic. It will work on machines with a guard digit in
  33.      add/subtract, or on those binary machines without guard digits which
  34.      subtract like the Cray X-MP, Cray Y-MP, Cray C-90, or Cray-2. It could
  35.      conceivably fail on hexadecimal or decimal machines without guard digits,
  36.      but we know of none.
  37.  
  38.  
  39. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  40.      JOBZ    (input) CHARACTER*1
  41.              = 'N':  Compute eigenvalues only;
  42.              = 'V':  Compute eigenvalues and eigenvectors.
  43.  
  44.      UPLO    (input) CHARACTER*1
  45.              = 'U':  Upper triangle of A is stored;
  46.              = 'L':  Lower triangle of A is stored.
  47.  
  48.      N       (input) INTEGER
  49.              The order of the matrix A.  N >= 0.
  50.  
  51.      KD      (input) INTEGER
  52.              The number of superdiagonals of the matrix A if UPLO = 'U', or
  53.              the number of subdiagonals if UPLO = 'L'.  KD >= 0.
  54.  
  55.      AB      (input/output) COMPLEX*16 array, dimension (LDAB, N)
  56.              On entry, the upper or lower triangle of the Hermitian band
  57.              matrix A, stored in the first KD+1 rows of the array.  The j-th
  58.              column of A is stored in the j-th column of the array AB as
  59.              follows:  if UPLO = 'U', AB(kd+1+i-j,j) = A(i,j) for max(1,j-
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ZZZZHHHHBBBBEEEEVVVVDDDD((((3333FFFF))))                                                          ZZZZHHHHBBBBEEEEVVVVDDDD((((3333FFFF))))
  71.  
  72.  
  73.  
  74.              kd)<=i<=j; if UPLO = 'L', AB(1+i-j,j)    = A(i,j) for
  75.              j<=i<=min(n,j+kd).
  76.  
  77.              On exit, AB is overwritten by values generated during the
  78.              reduction to tridiagonal form.  If UPLO = 'U', the first
  79.              superdiagonal and the diagonal of the tridiagonal matrix T are
  80.              returned in rows KD and KD+1 of AB, and if UPLO = 'L', the
  81.              diagonal and first subdiagonal of T are returned in the first two
  82.              rows of AB.
  83.  
  84.      LDAB    (input) INTEGER
  85.              The leading dimension of the array AB.  LDAB >= KD + 1.
  86.  
  87.      W       (output) DOUBLE PRECISION array, dimension (N)
  88.              If INFO = 0, the eigenvalues in ascending order.
  89.  
  90.      Z       (output) COMPLEX*16 array, dimension (LDZ, N)
  91.              If JOBZ = 'V', then if INFO = 0, Z contains the orthonormal
  92.              eigenvectors of the matrix A, with the i-th column of Z holding
  93.              the eigenvector associated with W(i).  If JOBZ = 'N', then Z is
  94.              not referenced.
  95.  
  96.      LDZ     (input) INTEGER
  97.              The leading dimension of the array Z.  LDZ >= 1, and if JOBZ =
  98.              'V', LDZ >= max(1,N).
  99.  
  100.      WORK    (workspace/output) COMPLEX*16 array, dimension (LWORK)
  101.              On exit, if LWORK > 0, WORK(1) returns the optimal LWORK.
  102.  
  103.      LWORK   (input) INTEGER
  104.              The dimension of the array WORK.  If N <= 1,               LWORK
  105.              must be at least 1.  If JOBZ = 'N' and N > 1, LWORK must be at
  106.              least N.  If JOBZ = 'V' and N > 1, LWORK must be at least 2*N**2.
  107.  
  108.      RWORK   (workspace/output) DOUBLE PRECISION array,
  109.              dimension (LRWORK) On exit, if LRWORK > 0, RWORK(1) returns the
  110.              optimal LRWORK.
  111.  
  112.      LRWORK  (input) INTEGER
  113.              The dimension of array RWORK.  If N <= 1,               LRWORK
  114.              must be at least 1.  If JOBZ = 'N' and N > 1, LRWORK must be at
  115.              least N.  If JOBZ = 'V' and N > 1, LRWORK must be at least 1 +
  116.              4*N + 2*N*lg N + 3*N**2 , where lg( N ) = smallest integer k such
  117.              that 2**k >= N .
  118.  
  119.      IWORK   (workspace/output) INTEGER array, dimension (LIWORK)
  120.              On exit, if LIWORK > 0, IWORK(1) returns the optimal LIWORK.
  121.  
  122.      LIWORK  (input) INTEGER
  123.              The dimension of array IWORK.  If JOBZ = 'N' or N <= 1, LIWORK
  124.              must be at least 1.  If JOBZ = 'V' and N > 1, LIWORK must be at
  125.              least 2 + 5*N .
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ZZZZHHHHBBBBEEEEVVVVDDDD((((3333FFFF))))                                                          ZZZZHHHHBBBBEEEEVVVVDDDD((((3333FFFF))))
  137.  
  138.  
  139.  
  140.      INFO    (output) INTEGER
  141.              = 0:  successful exit.
  142.              < 0:  if INFO = -i, the i-th argument had an illegal value.
  143.              > 0:  if INFO = i, the algorithm failed to converge; i off-
  144.              diagonal elements of an intermediate tridiagonal form did not
  145.              converge to zero.
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.